package com.atguigu.gateway.util;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;

import java.security.Key;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JwtUtil {

    // 生成密钥
    private static final Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);

    // 设置过期时间(毫秒)
    private static final long EXPIRATION_TIME = 86400000; // 24小时

    /**
     * 生成 JWT token
     */
    public static String generateToken(String username) {
        Date now = new Date();
        Date expiryDate = new Date(now.getTime() + EXPIRATION_TIME);

        // 自定义 payload 内容
        Map<String, Object> claims = new HashMap<>();
        claims.put("username", username);
        claims.put("role", "user");

        return Jwts.builder()
                .setClaims(claims)              // 设置 payload
                .setSubject(username)           // 设置主题
                .setIssuedAt(new Date())        // 设置签发时间
                .setExpiration(expiryDate)      // 设置过期时间
                .signWith(key)                  // 使用密钥签名
                .compact();                     // 生成 token 字符串
    }
}
